[INFO] cloning repository https://github.com/Sentinel-Ops/Nidan-v2
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Sentinel-Ops/Nidan-v2" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSentinel-Ops%2FNidan-v2", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSentinel-Ops%2FNidan-v2'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5274e4192879fea762a34e161ff5554393d02f15
[INFO] checking Sentinel-Ops/Nidan-v2 against master#c290daa1e5274a52e54a0f49e31bd70192abc606 for pr-133502-23
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSentinel-Ops%2FNidan-v2" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Sentinel-Ops/Nidan-v2
[INFO] finished tweaking git repo https://github.com/Sentinel-Ops/Nidan-v2
[INFO] tweaked toml for git repo https://github.com/Sentinel-Ops/Nidan-v2 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Sentinel-Ops/Nidan-v2 on toolchain c290daa1e5274a52e54a0f49e31bd70192abc606
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Sentinel-Ops/Nidan-v2 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded prost-build v0.13.5
[INFO] [stderr]   Downloaded tokio-vsock v0.7.2
[INFO] [stderr]   Downloaded vsock v0.5.4
[INFO] [stderr]   Downloaded ashpd v0.9.3
[INFO] [stderr]   Downloaded nasm-rs v0.3.2
[INFO] [stderr]   Downloaded tree_magic_mini v3.2.2
[INFO] [stderr]   Downloaded oid-registry v0.7.1
[INFO] [stderr]   Downloaded asn1-rs-derive v0.5.1
[INFO] [stderr]   Downloaded wl-clipboard-rs v0.9.3
[INFO] [stderr]   Downloaded der-parser v9.0.0
[INFO] [stderr]   Downloaded x509-parser v0.16.0
[INFO] [stderr]   Downloaded asn1-rs v0.6.2
[INFO] [stderr]   Downloaded openh264-sys2 v0.6.6
[INFO] [stderr]   Downloaded sdl2 v0.36.0
[INFO] [stderr]   Downloaded openh264 v0.6.6
[INFO] [stderr]   Downloaded sdl2-sys v0.36.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb
[INFO] running `Command { std: "docker" "start" "9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb" "/opt/rustwide/cargo-home/bin/cargo" "+c290daa1e5274a52e54a0f49e31bd70192abc606" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]     Checking itoa v1.0.18
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.52
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking typenum v1.20.1
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling cc v1.2.63
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking cpufeatures v0.2.17
[INFO] [stderr]    Compiling fixedbitset v0.5.7
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling multimap v0.10.1
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]    Compiling petgraph v0.7.1
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking winnow v0.7.15
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking socket2 v0.6.4
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking unicode-segmentation v1.13.3
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]     Checking anstyle-parse v1.0.0
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking colorchoice v1.0.5
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking anstyle v1.0.14
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking clap_lex v1.1.0
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]     Checking powerfmt v0.2.0
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]     Checking time-core v0.1.8
[INFO] [stderr]     Checking num-conv v0.2.2
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]     Checking http v1.4.2
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]     Checking openssl-probe v0.2.1
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling quinn-udp v0.5.14
[INFO] [stderr]     Checking tinyvec_macros v0.1.1
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]     Checking siphasher v1.0.3
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]     Checking tinyvec v1.11.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling quinn v0.11.9
[INFO] [stderr]     Checking rustc-hash v2.1.2
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking iana-time-zone v0.1.65
[INFO] [stderr]     Checking lru-slab v0.1.2
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking httpdate v1.0.3
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling nasm-rs v0.3.2
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]     Checking mime v0.3.17
[INFO] [stderr]    Compiling openh264-sys2 v0.6.6
[INFO] [stderr]     Checking pem v3.0.6
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]    Compiling protobuf v2.28.0
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking uuid v1.23.3
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling prost-derive v0.13.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]    Compiling prost-derive v0.12.6
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking fastbloom v0.14.1
[INFO] [stderr]     Checking chacha20poly1305 v0.10.1
[INFO] [stderr]     Checking rustls-native-certs v0.8.4
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.5.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]    Compiling prost v0.13.5
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]    Compiling prometheus v0.13.4
[INFO] [stderr]     Checking asn1-rs v0.6.2
[INFO] [stderr]     Checking vsock v0.5.4
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]     Checking simple_asn1 v0.6.4
[INFO] [stderr]    Compiling prost-types v0.13.5
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]    Compiling oid-registry v0.7.1
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking prost v0.12.6
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking yasna v0.5.2
[INFO] [stderr]     Checking der-parser v9.0.0
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking rcgen v0.13.2
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]    Compiling prost-build v0.13.5
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking x509-parser v0.16.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]    Compiling nidan-proto v0.1.0 (/opt/rustwide/workdir/nidan-proto)
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tokio-vsock v0.7.2
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking nidan-common v0.1.0 (/opt/rustwide/workdir/nidan-common)
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stdout] warning: unused import: `AeadCore`
[INFO] [stdout]  --> nidan-common/src/crypto.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     aead::{Aead, AeadCore, KeyInit, OsRng},
[INFO] [stdout]   |                  ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AeadCore`
[INFO] [stdout]  --> nidan-common/src/crypto.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     aead::{Aead, AeadCore, KeyInit, OsRng},
[INFO] [stdout]   |                  ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking nidan-agent v0.1.0 (/opt/rustwide/workdir/nidan-agent)
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-agent/src/capture/x11.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 52 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:33:19
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:133:11
[INFO] [stdout]     |
[INFO] [stdout] 133 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:215:15
[INFO] [stdout]     |
[INFO] [stdout] 215 |     #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:126:15
[INFO] [stdout]     |
[INFO] [stdout] 126 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:129:19
[INFO] [stdout]     |
[INFO] [stdout] 129 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-agent/src/input.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-agent/src/input.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use nidan_proto::{InputBatch, InputEventPayload};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:69:19
[INFO] [stdout]    |
[INFO] [stdout] 69 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/input.rs:154:19
[INFO] [stdout]     |
[INFO] [stdout] 154 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/input.rs:175:15
[INFO] [stdout]     |
[INFO] [stdout] 175 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProxyHelloAck`
[INFO] [stdout]   --> nidan-agent/src/vsock_link.rs:29:18
[INFO] [stdout]    |
[INFO] [stdout] 29 |     PixelFormat, ProxyHelloAck, RawFrame as ProtoRawFrame, StartCapture,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-agent/src/capture/x11.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 52 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:33:19
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:133:11
[INFO] [stdout]     |
[INFO] [stdout] 133 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:215:15
[INFO] [stdout]     |
[INFO] [stdout] 215 |     #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:126:15
[INFO] [stdout]     |
[INFO] [stdout] 126 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/capture/x11.rs:129:19
[INFO] [stdout]     |
[INFO] [stdout] 129 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-agent/src/input.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-agent/src/input.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use nidan_proto::{InputBatch, InputEventPayload};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:69:19
[INFO] [stdout]    |
[INFO] [stdout] 69 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-agent/src/input.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/input.rs:154:19
[INFO] [stdout]     |
[INFO] [stdout] 154 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-agent/src/input.rs:175:15
[INFO] [stdout]     |
[INFO] [stdout] 175 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `pipewire-capture`, `remotedesktop-input`, `stub`, and `wayland`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProxyHelloAck`
[INFO] [stdout]   --> nidan-agent/src/vsock_link.rs:29:18
[INFO] [stdout]    |
[INFO] [stdout] 29 |     PixelFormat, ProxyHelloAck, RawFrame as ProtoRawFrame, StartCapture,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> nidan-agent/src/vsock_link.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 109 |     mut stream: VsockStream,
[INFO] [stdout]     |     ----^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> nidan-agent/src/vsock_link.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 109 |     mut stream: VsockStream,
[INFO] [stdout]     |     ----^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `display_number`
[INFO] [stdout]   --> nidan-agent/src/input.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_display_number`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `injector_task`
[INFO] [stdout]    --> nidan-agent/src/main.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let injector_task = injector.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_injector_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_keyframe` and `damage_rects` are never read
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct RawFrame {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub is_keyframe: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 41 |     /// Rectangle(s) modifié(s) depuis la frame précédente (optionnel)
[INFO] [stdout] 42 |     pub damage_rects: Vec<DamageRect>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RawFrame` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, `width`, and `height` are never read
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct DamageRect {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 48 |     pub x: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 49 |     pub y: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 50 |     pub width: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 51 |     pub height: u16,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DamageRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_xshm` and `supports_xdamage` are never read
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct CapturerCapabilities {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub supports_xshm: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub supports_xdamage: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CapturerCapabilities` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Rgba8888` and `Rgb888` are never constructed
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum PixelFormat {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 67 |     Bgra8888,
[INFO] [stdout] 68 |     Rgba8888,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 69 |     Rgb888,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PixelFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bytes_per_pixel` and `ffmpeg_name` are never used
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl PixelFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 73 |     /// Bytes par pixel
[INFO] [stdout] 74 |     pub fn bytes_per_pixel(self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn ffmpeg_name(self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StubCapturer` is never constructed
[INFO] [stdout]    --> nidan-agent/src/capture/mod.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct StubCapturer {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> nidan-agent/src/capture/mod.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl StubCapturer {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 152 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `display_number` is never read
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct X11Capturer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 17 |     caps: CapturerCapabilities,
[INFO] [stdout] 18 |     display_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InputInjector` is never constructed
[INFO] [stdout]   --> nidan-agent/src/input.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct InputInjector {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `inject_batch`, `inject_one`, `injected_count`, `set_clipboard`, and `clipboard` are never used
[INFO] [stdout]    --> nidan-agent/src/input.rs:39:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl InputInjector {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     /// Crée un injecteur connecté au display X
[INFO] [stdout]  39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn inject_batch(&mut self, batch: &InputBatch) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     fn inject_one(&mut self, event: &nidan_proto::InputEvent) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn injected_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn set_clipboard(&mut self, content: &[u8]) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn clipboard(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> nidan-agent/src/vsock_link.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 |     Stop(StopCapture),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 40 -     Stop(StopCapture),
[INFO] [stdout] 40 +     Stop(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `display_number`
[INFO] [stdout]   --> nidan-agent/src/input.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_display_number`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `injector_task`
[INFO] [stdout]    --> nidan-agent/src/main.rs:149:9
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let injector_task = injector.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_injector_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_keyframe` and `damage_rects` are never read
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct RawFrame {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub is_keyframe: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 41 |     /// Rectangle(s) modifié(s) depuis la frame précédente (optionnel)
[INFO] [stdout] 42 |     pub damage_rects: Vec<DamageRect>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RawFrame` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, `width`, and `height` are never read
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct DamageRect {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 48 |     pub x: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 49 |     pub y: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 50 |     pub width: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 51 |     pub height: u16,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DamageRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_xshm` and `supports_xdamage` are never read
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct CapturerCapabilities {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub supports_xshm: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub supports_xdamage: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CapturerCapabilities` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Rgba8888` and `Rgb888` are never constructed
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum PixelFormat {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 67 |     Bgra8888,
[INFO] [stdout] 68 |     Rgba8888,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 69 |     Rgb888,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PixelFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bytes_per_pixel` and `ffmpeg_name` are never used
[INFO] [stdout]   --> nidan-agent/src/capture/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl PixelFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 73 |     /// Bytes par pixel
[INFO] [stdout] 74 |     pub fn bytes_per_pixel(self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn ffmpeg_name(self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StubCapturer` is never constructed
[INFO] [stdout]    --> nidan-agent/src/capture/mod.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct StubCapturer {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> nidan-agent/src/capture/mod.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl StubCapturer {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 152 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `display_number` is never read
[INFO] [stdout]   --> nidan-agent/src/capture/x11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct X11Capturer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 17 |     caps: CapturerCapabilities,
[INFO] [stdout] 18 |     display_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InputInjector` is never constructed
[INFO] [stdout]   --> nidan-agent/src/input.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct InputInjector {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `inject_batch`, `inject_one`, `injected_count`, `set_clipboard`, and `clipboard` are never used
[INFO] [stdout]    --> nidan-agent/src/input.rs:39:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl InputInjector {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  38 |     /// Crée un injecteur connecté au display X
[INFO] [stdout]  39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn inject_batch(&mut self, batch: &InputBatch) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     fn inject_one(&mut self, event: &nidan_proto::InputEvent) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn injected_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn set_clipboard(&mut self, content: &[u8]) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn clipboard(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> nidan-agent/src/vsock_link.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 |     Stop(StopCapture),
[INFO] [stdout]    |     ---- ^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 40 -     Stop(StopCapture),
[INFO] [stdout] 40 +     Stop(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking nidan-audit v0.1.0 (/opt/rustwide/workdir/nidan-audit)
[INFO] [stderr]     Checking capture-test v0.1.0 (/opt/rustwide/workdir/capture-test)
[INFO] [stdout] warning: unused imports: `Counter` and `Gauge`
[INFO] [stdout]   --> nidan-audit/src/metrics/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Counter, Gauge, Histogram, HistogramOpts, IntCounter, IntGauge,
[INFO] [stdout]    |     ^^^^^^^  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{self, Write};
[INFO] [stdout]    |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:23:17
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:28:28
[INFO] [stdout]    |
[INFO] [stdout] 28 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]   --> nidan-audit/src/storage/mod.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Counter` and `Gauge`
[INFO] [stdout]   --> nidan-audit/src/metrics/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Counter, Gauge, Histogram, HistogramOpts, IntCounter, IntGauge,
[INFO] [stdout]    |     ^^^^^^^  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{self, Write};
[INFO] [stdout]    |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:23:17
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:28:28
[INFO] [stdout]    |
[INFO] [stdout] 28 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]   --> nidan-audit/src/storage/mod.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_tx`
[INFO] [stdout]   --> nidan-audit/src/lib.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let (event_tx, event_rx) = mpsc::channel::<AuditEvent>(1024);
[INFO] [stdout]    |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_tx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> nidan-audit/src/lib.rs:171:26
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn make_audit_sender(engine: &AuditEngine) -> Option<AuditEventSender> {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `quality` is never read
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct SessionRecorder {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     quality:       u8,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event_tx`
[INFO] [stdout]   --> nidan-audit/src/lib.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let (event_tx, event_rx) = mpsc::channel::<AuditEvent>(1024);
[INFO] [stdout]    |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_event_tx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `engine`
[INFO] [stdout]    --> nidan-audit/src/lib.rs:171:26
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub fn make_audit_sender(engine: &AuditEngine) -> Option<AuditEventSender> {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `quality` is never read
[INFO] [stdout]   --> nidan-audit/src/recording/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct SessionRecorder {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     quality:       u8,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking openh264 v0.6.6
[INFO] [stderr]     Checking encode-test v0.1.0 (/opt/rustwide/workdir/encode-test)
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking rustls-platform-verifier v0.6.2
[INFO] [stderr]     Checking quinn-proto v0.11.14
[INFO] [stderr]     Checking nidan-broker v0.1.0 (/opt/rustwide/workdir/nidan-broker)
[INFO] [stderr]     Checking nidan-server v0.1.0 (/opt/rustwide/workdir/nidan-server)
[INFO] [stderr]     Checking nidan-client v0.1.0 (/opt/rustwide/workdir/nidan-client)
[INFO] [stderr]     Checking nidan-proxy-encoder v0.1.0 (/opt/rustwide/workdir/nidan-proxy-encoder)
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 | use anyhow::{Context, Result};
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoCodec`
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | use nidan_proto::{VideoCodec, VideoFrame};
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-client/src/decoder/ffmpeg.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `info` and `warn`
[INFO] [stdout]  --> nidan-client/src/decoder/ffmpeg.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-client/src/decoder/openh264_dec.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> nidan-client/src/decoder/openh264_dec.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{debug, info};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-client/src/input/mod.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-client/src/input/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     InputEventPayload, KeyEvent, MouseEvent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use anyhow::{Context, Result};
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> nidan-client/src/renderer/sdl.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-client/src/renderer/sdl.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> nidan-client/src/renderer/sdl.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RenderRect` and `ScalingMode`
[INFO] [stdout]   --> nidan-client/src/renderer/sdl.rs:15:56
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::renderer::{ConnectionStatus, RenderMetrics, RenderRect, ScalingMode};
[INFO] [stdout]    |                                                        ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-client/src/stream/mod.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BrokerSessionResponse` and `ClientSessionRequest`
[INFO] [stdout]   --> nidan-client/src/stream/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     BrokerSessionResponse, ClientServerHandshake, ClientSessionRequest,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::ClientSession`
[INFO] [stdout]   --> nidan-client/src/stream/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use crate::session::ClientSession;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bail`
[INFO] [stdout]  --> nidan-broker/src/auth/jwt.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |              ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Mutex`
[INFO] [stdout]  --> nidan-broker/src/auth/ratelimit.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> nidan-broker/src/pool/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> nidan-broker/src/pool/mod.rs:11:27
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> nidan-broker/src/pool/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VmEntry`
[INFO] [stdout]   --> nidan-broker/src/pool/mod.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::config::{PoolConfig, VmEntry};
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> nidan-broker/src/routing/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> nidan-broker/src/routing/mod.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]  --> nidan-broker/src/session.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::net::IpAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nidan_common::session::SessionId`
[INFO] [stdout]   --> nidan-broker/src/session.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use nidan_common::session::SessionId;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bail`
[INFO] [stdout]  --> nidan-broker/src/auth/jwt.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |              ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Mutex`
[INFO] [stdout]  --> nidan-broker/src/auth/ratelimit.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> nidan-broker/src/pool/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> nidan-broker/src/pool/mod.rs:11:27
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> nidan-broker/src/pool/mod.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VmEntry`
[INFO] [stdout]   --> nidan-broker/src/pool/mod.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::config::{PoolConfig, VmEntry};
[INFO] [stdout]    |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]   --> nidan-broker/src/routing/mod.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::sync::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> nidan-broker/src/routing/mod.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]  --> nidan-broker/src/session.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::net::IpAddr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nidan_common::session::SessionId`
[INFO] [stdout]   --> nidan-broker/src/session.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use nidan_common::session::SessionId;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 | use anyhow::{Context, Result};
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoCodec`
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | use nidan_proto::{VideoCodec, VideoFrame};
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-client/src/decoder/ffmpeg.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `info` and `warn`
[INFO] [stdout]  --> nidan-client/src/decoder/ffmpeg.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-client/src/decoder/openh264_dec.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> nidan-client/src/decoder/openh264_dec.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{debug, info};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-client/src/input/mod.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-client/src/input/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     InputEventPayload, KeyEvent, MouseEvent,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | use anyhow::{Context, Result};
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:14:15
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]  --> nidan-client/src/renderer/sdl.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Instant;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-client/src/renderer/sdl.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> nidan-client/src/renderer/sdl.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `RenderRect` and `ScalingMode`
[INFO] [stdout]   --> nidan-client/src/renderer/sdl.rs:15:56
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::renderer::{ConnectionStatus, RenderMetrics, RenderRect, ScalingMode};
[INFO] [stdout]    |                                                        ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-client/src/stream/mod.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BrokerSessionResponse` and `ClientSessionRequest`
[INFO] [stdout]   --> nidan-client/src/stream/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     BrokerSessionResponse, ClientServerHandshake, ClientSessionRequest,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::ClientSession`
[INFO] [stdout]   --> nidan-client/src/stream/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use crate::session::ClientSession;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/main.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[cfg(feature="remotedesktop-input")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/main.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `pipewire-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[cfg(feature = "pipewire-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `pipewire-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-proxy-encoder/src/capture/x11.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 52 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:33:19
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:133:11
[INFO] [stdout]     |
[INFO] [stdout] 133 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:215:15
[INFO] [stdout]     |
[INFO] [stdout] 215 |     #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:126:15
[INFO] [stdout]     |
[INFO] [stdout] 126 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:129:19
[INFO] [stdout]     |
[INFO] [stdout] 129 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `pipewire-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:139:15
[INFO] [stdout]     |
[INFO] [stdout] 139 |         #[cfg(feature = "pipewire-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `pipewire-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `pipewire-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:145:19
[INFO] [stdout]     |
[INFO] [stdout] 145 |         #[cfg(not(feature = "pipewire-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `pipewire-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-proxy-encoder/src/input.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use nidan_proto::{InputBatch, InputEventPayload};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:69:19
[INFO] [stdout]    |
[INFO] [stdout] 69 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/input.rs:154:19
[INFO] [stdout]     |
[INFO] [stdout] 154 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/input.rs:175:15
[INFO] [stdout]     |
[INFO] [stdout] 175 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoCodec`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | use nidan_proto::{VideoCodec, VideoFrame};
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:66:19
[INFO] [stdout]    |
[INFO] [stdout] 66 |         #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:98:23
[INFO] [stdout]    |
[INFO] [stdout] 98 |             #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-proxy-encoder/src/encoder/openh264_enc.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoFrame`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:30:62
[INFO] [stdout]    |
[INFO] [stdout] 30 |     ClientServerHandshake, ServerHandshakeAck, SessionState, VideoFrame,
[INFO] [stdout]    |                                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::ServerSession`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::session::ServerSession;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:54:11
[INFO] [stdout]    |
[INFO] [stdout] 54 |     #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:94:19
[INFO] [stdout]    |
[INFO] [stdout] 94 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]    --> nidan-proxy-encoder/src/stream/mod.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]    --> nidan-proxy-encoder/src/stream/mod.rs:137:19
[INFO] [stdout]     |
[INFO] [stdout] 137 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-server/src/capture/x11.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-server/src/capture/x11.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-server/src/input.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-server/src/input.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use nidan_proto::{InputBatch, InputEventPayload};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> nidan-server/src/encoder/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoCodec`
[INFO] [stdout]   --> nidan-server/src/encoder/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | use nidan_proto::{VideoCodec, VideoFrame};
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-server/src/encoder/ffmpeg.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> nidan-server/src/encoder/openh264_enc.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoFrame`
[INFO] [stdout]   --> nidan-server/src/stream/mod.rs:30:62
[INFO] [stdout]    |
[INFO] [stdout] 30 |     ClientServerHandshake, ServerHandshakeAck, SessionState, VideoFrame,
[INFO] [stdout]    |                                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::ServerSession`
[INFO] [stdout]   --> nidan-server/src/stream/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::session::ServerSession;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-server/src/capture/x11.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-server/src/capture/x11.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-server/src/input.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-server/src/input.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use nidan_proto::{InputBatch, InputEventPayload};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> nidan-server/src/encoder/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoCodec`
[INFO] [stdout]   --> nidan-server/src/encoder/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | use nidan_proto::{VideoCodec, VideoFrame};
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-server/src/encoder/ffmpeg.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> nidan-server/src/encoder/openh264_enc.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoFrame`
[INFO] [stdout]   --> nidan-server/src/stream/mod.rs:30:62
[INFO] [stdout]    |
[INFO] [stdout] 30 |     ClientServerHandshake, ServerHandshakeAck, SessionState, VideoFrame,
[INFO] [stdout]    |                                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::ServerSession`
[INFO] [stdout]   --> nidan-server/src/stream/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::session::ServerSession;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:183:19
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let (ack, mut video_cipher, mut control_cipher) = Self::do_handshake(&conn, &self.config, &session_token).await
[INFO] [stdout]     |                   ----^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/main.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[cfg(feature="remotedesktop-input")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]    = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/main.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `pipewire-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[cfg(feature = "pipewire-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `pipewire-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:18:28
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-proxy-encoder/src/capture/x11.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:11:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 52 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:28:15
[INFO] [stdout]    |
[INFO] [stdout] 28 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:33:19
[INFO] [stdout]    |
[INFO] [stdout] 33 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:133:11
[INFO] [stdout]     |
[INFO] [stdout] 133 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:215:15
[INFO] [stdout]     |
[INFO] [stdout] 215 |     #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:126:15
[INFO] [stdout]     |
[INFO] [stdout] 126 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/x11.rs:129:19
[INFO] [stdout]     |
[INFO] [stdout] 129 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `pipewire-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:139:15
[INFO] [stdout]     |
[INFO] [stdout] 139 |         #[cfg(feature = "pipewire-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `pipewire-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `pipewire-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:145:19
[INFO] [stdout]     |
[INFO] [stdout] 145 |         #[cfg(not(feature = "pipewire-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `pipewire-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> nidan-proxy-encoder/src/input.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputEventPayload`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use nidan_proto::{InputBatch, InputEventPayload};
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 |     #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:40:15
[INFO] [stdout]    |
[INFO] [stdout] 40 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:69:19
[INFO] [stdout]    |
[INFO] [stdout] 69 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/input.rs:154:19
[INFO] [stdout]     |
[INFO] [stdout] 154 |         #[cfg(not(feature = "x11-capture"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `x11-capture`
[INFO] [stdout]    --> nidan-proxy-encoder/src/input.rs:175:15
[INFO] [stdout]     |
[INFO] [stdout] 175 |         #[cfg(feature = "x11-capture")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `x11-capture` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoCodec`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/mod.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 | use nidan_proto::{VideoCodec, VideoFrame};
[INFO] [stdout]    |                   ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 |     #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:66:19
[INFO] [stdout]    |
[INFO] [stdout] 66 |         #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `ffmpeg`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:98:23
[INFO] [stdout]    |
[INFO] [stdout] 98 |             #[cfg(all(feature = "ffmpeg", not(feature = "stub")))]
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `ffmpeg` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> nidan-proxy-encoder/src/encoder/openh264_enc.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VideoFrame`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:30:62
[INFO] [stdout]    |
[INFO] [stdout] 30 |     ClientServerHandshake, ServerHandshakeAck, SessionState, VideoFrame,
[INFO] [stdout]    |                                                              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::session::ServerSession`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::session::ServerSession;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:54:11
[INFO] [stdout]    |
[INFO] [stdout] 54 |     #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]   --> nidan-proxy-encoder/src/stream/mod.rs:94:19
[INFO] [stdout]    |
[INFO] [stdout] 94 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]    = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]    --> nidan-proxy-encoder/src/stream/mod.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `remotedesktop-input`
[INFO] [stdout]    --> nidan-proxy-encoder/src/stream/mod.rs:137:19
[INFO] [stdout]     |
[INFO] [stdout] 137 |             #[cfg(feature = "remotedesktop-input")]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `openh264`, `stub`, and `vsock-source`
[INFO] [stdout]     = help: consider adding `remotedesktop-input` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:183:19
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let (ack, mut video_cipher, mut control_cipher) = Self::do_handshake(&conn, &self.config, &session_token).await
[INFO] [stdout]     |                   ----^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nal`
[INFO] [stdout]   --> nidan-client/src/decoder/ffmpeg.rs:82:37
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn decode_packet(&mut self, nal: &[u8], is_keyframe: bool) -> Result<Option<Vec<u8>>> {
[INFO] [stdout]    |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_nal`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_video`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:195:14
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let (tx_video, rx_video) = mpsc::channel::<VideoFrame>(VIDEO_CHANNEL_SIZE);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_video`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_video`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:195:24
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let (tx_video, rx_video) = mpsc::channel::<VideoFrame>(VIDEO_CHANNEL_SIZE);
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_video`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_decoded`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:196:14
[INFO] [stdout]     |
[INFO] [stdout] 196 |         let (tx_decoded, rx_decoded_sync) = {
[INFO] [stdout]     |              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_decoded`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_decoded_sync`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:196:26
[INFO] [stdout]     |
[INFO] [stdout] 196 |         let (tx_decoded, rx_decoded_sync) = {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_decoded_sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:197:18
[INFO] [stdout]     |
[INFO] [stdout] 197 |             let (s, r) = std::sync::mpsc::sync_channel::<DecodedFrame>(DECODED_CHANNEL_SIZE);
[INFO] [stdout]     |                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tr`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:199:22
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let (ts, tr) = mpsc::channel::<DecodedFrame>(DECODED_CHANNEL_SIZE);
[INFO] [stdout]     |                      ^^ help: if this is intentional, prefix it with an underscore: `_tr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_input`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:202:14
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let (tx_input, rx_input)   = mpsc::channel::<InputEvent>(INPUT_CHANNEL_SIZE);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_input`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:202:24
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let (tx_input, rx_input)   = mpsc::channel::<InputEvent>(INPUT_CHANNEL_SIZE);
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metrics_rx`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:218:26
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let (metrics_tx, metrics_rx)     = tokio::sync::watch::channel(
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metrics_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `display_number`
[INFO] [stdout]   --> nidan-server/src/input.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_display_number`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data`, `width`, `height`, `pts_ms`, `monitor_index`, and `decode_duration_us` are never read
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct DecodedFrame {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 35 |     /// Pixels BGRA (4 bytes par pixel)
[INFO] [stdout] 36 |     pub data: Vec<u8>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 37 |     /// Dimensions
[INFO] [stdout] 38 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 39 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub pts_ms: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 44 |     /// Indice du moniteur source
[INFO] [stdout] 45 |     pub monitor_index: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 46 |     /// Durée de décodage (µs)
[INFO] [stdout] 47 |     pub decode_duration_us: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DecodedFrame` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ffmpeg_hw_name` is never used
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl DecoderCodec {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn ffmpeg_hw_name(self) -> Option<&'static str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `codec`, `width`, `height`, and `hardware` are never read
[INFO] [stdout]   --> nidan-client/src/decoder/ffmpeg.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FfmpegDecoder {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 13 |     codec: DecoderCodec,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 14 |     width: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 15 |     height: u32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 16 |     hardware: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flush`, `width`, and `height` are never used
[INFO] [stdout]    --> nidan-client/src/decoder/ffmpeg.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl FfmpegDecoder {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn width(&self) -> u32 { self.width }
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 148 |     pub fn height(&self) -> u32 { self.height }
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Openh264Decoder` is never constructed
[INFO] [stdout]   --> nidan-client/src/decoder/openh264_dec.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Openh264Decoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> nidan-client/src/decoder/openh264_dec.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl Openh264Decoder {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  27 |     /// Crée un décodeur H.264 réel
[INFO] [stdout]  28 |     pub fn new(codec: DecoderCodec, _hardware: bool) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn stub(width: u32, height: u32) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn request_idr(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn decode_packet(&mut self, nal: &[u8], _is_keyframe: bool) -> Result<Option<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn width(&self) -> u32 { self.width }
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 124 |     pub fn height(&self) -> u32 { self.height }
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> nidan-client/src/input/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum InputEvent {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] 18 |     KeyDown {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     KeyUp {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     MouseMove {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     MouseDown {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     MouseUp {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     MouseScroll {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     ClipboardChanged {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InputEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScalingMode` is never used
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum ScalingMode {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_str` is never used
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl ScalingMode {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 34 |     pub fn from_str(s: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RenderRect` is never constructed
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct RenderRect {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `compute` and `window_to_normalized` are never used
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl RenderRect {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 53 |     /// Calcule le rectangle de destination selon le mode de scaling
[INFO] [stdout] 54 |     pub fn compute(
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn window_to_normalized(&self, wx: i32, wy: i32) -> Option<(f32, f32)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fps`, `frames_rendered`, `frames_dropped`, `decode_latency_us`, `last_frame_size`, and `connection_status` are never read
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:96:9
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct RenderMetrics {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout]  96 |     pub fps: f32,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]  97 |     pub frames_rendered: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     pub frames_dropped: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     pub decode_latency_us: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     pub last_frame_size: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 101 |     pub connection_status: ConnectionStatus,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RenderMetrics` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Reconnecting` and `Disconnected` are never constructed
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub enum ConnectionStatus {
[INFO] [stdout]     |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 109 |     Reconnecting,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 110 |     Disconnected,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConnectionStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl ConnectionStatus {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 114 |     pub fn label(self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RendererHandle` is never constructed
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct RendererHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_renderer` is never used
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn start_renderer(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ClientSessionState` is never used
[INFO] [stdout]  --> nidan-client/src/session.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum ClientSessionState {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientSessionMetrics` is never constructed
[INFO] [stdout]   --> nidan-client/src/session.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ClientSessionMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientSession` is never constructed
[INFO] [stdout]   --> nidan-client/src/session.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ClientSession {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `elapsed_secs`, `fps`, and `record_frame` are never used
[INFO] [stdout]   --> nidan-client/src/session.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl ClientSession {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 43 |     pub fn new(width: u32, height: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn elapsed_secs(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn fps(&self) -> f32 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn record_frame(&mut self, size: usize, decode_us: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `display_number`
[INFO] [stdout]   --> nidan-server/src/input.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_display_number`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nal`
[INFO] [stdout]   --> nidan-client/src/decoder/ffmpeg.rs:82:37
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn decode_packet(&mut self, nal: &[u8], is_keyframe: bool) -> Result<Option<Vec<u8>>> {
[INFO] [stdout]    |                                     ^^^ help: if this is intentional, prefix it with an underscore: `_nal`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `params`
[INFO] [stdout]   --> nidan-server/src/encoder/ffmpeg.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn init_encoder(params: &EncoderParams) -> Result<EncoderInner> {
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `params`
[INFO] [stdout]   --> nidan-server/src/encoder/ffmpeg.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn init_encoder(params: &EncoderParams) -> Result<EncoderInner> {
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handshake`
[INFO] [stdout]    --> nidan-server/src/stream/mod.rs:432:9
[INFO] [stdout]     |
[INFO] [stdout] 432 |         handshake: ClientServerHandshake,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handshake`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_video`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:195:14
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let (tx_video, rx_video) = mpsc::channel::<VideoFrame>(VIDEO_CHANNEL_SIZE);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_video`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_video`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:195:24
[INFO] [stdout]     |
[INFO] [stdout] 195 |         let (tx_video, rx_video) = mpsc::channel::<VideoFrame>(VIDEO_CHANNEL_SIZE);
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_video`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_decoded`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:196:14
[INFO] [stdout]     |
[INFO] [stdout] 196 |         let (tx_decoded, rx_decoded_sync) = {
[INFO] [stdout]     |              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_decoded`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_decoded_sync`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:196:26
[INFO] [stdout]     |
[INFO] [stdout] 196 |         let (tx_decoded, rx_decoded_sync) = {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_decoded_sync`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:197:18
[INFO] [stdout]     |
[INFO] [stdout] 197 |             let (s, r) = std::sync::mpsc::sync_channel::<DecodedFrame>(DECODED_CHANNEL_SIZE);
[INFO] [stdout]     |                  ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tr`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:199:22
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let (ts, tr) = mpsc::channel::<DecodedFrame>(DECODED_CHANNEL_SIZE);
[INFO] [stdout]     |                      ^^ help: if this is intentional, prefix it with an underscore: `_tr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tx_input`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:202:14
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let (tx_input, rx_input)   = mpsc::channel::<InputEvent>(INPUT_CHANNEL_SIZE);
[INFO] [stdout]     |              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tx_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rx_input`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:202:24
[INFO] [stdout]     |
[INFO] [stdout] 202 |         let (tx_input, rx_input)   = mpsc::channel::<InputEvent>(INPUT_CHANNEL_SIZE);
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rx_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metrics_rx`
[INFO] [stdout]    --> nidan-client/src/stream/mod.rs:218:26
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let (metrics_tx, metrics_rx)     = tokio::sync::watch::channel(
[INFO] [stdout]     |                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metrics_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handshake`
[INFO] [stdout]    --> nidan-server/src/stream/mod.rs:432:9
[INFO] [stdout]     |
[INFO] [stdout] 432 |         handshake: ClientServerHandshake,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handshake`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stride` and `damage_rects` are never read
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct RawFrame {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub stride: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub damage_rects: Vec<DamageRect>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RawFrame` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, `width`, and `height` are never read
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct DamageRect {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 48 |     pub x: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 49 |     pub y: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 50 |     pub width: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 51 |     pub height: u16,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DamageRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_xshm`, `supports_xdamage`, and `pixel_format` are never read
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct CapturerCapabilities {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub supports_xshm: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub supports_xdamage: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     pub pixel_format: PixelFormat,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CapturerCapabilities` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Rgba8888` and `Rgb888` are never constructed
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum PixelFormat {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 67 |     Bgra8888,
[INFO] [stdout] 68 |     Rgba8888,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 69 |     Rgb888,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PixelFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bytes_per_pixel` and `ffmpeg_name` are never used
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl PixelFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 73 |     /// Bytes par pixel
[INFO] [stdout] 74 |     pub fn bytes_per_pixel(self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn ffmpeg_name(self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StubCapturer` is never constructed
[INFO] [stdout]    --> nidan-server/src/capture/mod.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct StubCapturer {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> nidan-server/src/capture/mod.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl StubCapturer {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 152 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `display_number` is never read
[INFO] [stdout]   --> nidan-server/src/capture/x11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct X11Capturer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 17 |     caps: CapturerCapabilities,
[INFO] [stdout] 18 |     display_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]   --> nidan-server/src/input.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct InputInjector {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     width: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     height: u32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clipboard` is never used
[INFO] [stdout]    --> nidan-server/src/input.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl InputInjector {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn clipboard(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flush`, `set_bitrate`, and `resolution` are never used
[INFO] [stdout]    --> nidan-server/src/encoder/ffmpeg.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl FfmpegEncoder {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn set_bitrate(&mut self, kbps: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Openh264Encoder` is never constructed
[INFO] [stdout]   --> nidan-server/src/encoder/openh264_enc.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Openh264Encoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `request_keyframe`, `encode_frame`, and `resolution` are never used
[INFO] [stdout]    --> nidan-server/src/encoder/openh264_enc.rs:30:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Openh264Encoder {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  29 |     /// Crée un encodeur H.264 openh264
[INFO] [stdout]  30 |     pub fn new(params: &EncoderParams) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn request_keyframe(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn encode_frame(&mut self, frame: &RawFrame) -> Result<Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bitrate_kbps`, `crf`, `h264_profile`, `hw_device`, and `threads` are never read
[INFO] [stdout]   --> nidan-server/src/encoder/params.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct EncoderParams {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub bitrate_kbps: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Qualité CRF (0–51 pour H.264, lower = better)
[INFO] [stdout] 21 |     pub crf: u32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 22 |     /// Profil H.264 : "baseline", "main", "high"
[INFO] [stdout] 23 |     pub h264_profile: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub hw_device: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub threads: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncoderParams` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ffmpeg_hw_codec_name` is never used
[INFO] [stdout]   --> nidan-server/src/encoder/params.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl EncoderParams {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn ffmpeg_hw_codec_name(&self) -> Option<&'static str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerSession` is never constructed
[INFO] [stdout]   --> nidan-server/src/session.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ServerSession {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionMetrics` is never constructed
[INFO] [stdout]   --> nidan-server/src/session.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SessionMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `record_frame`, `fps_actual`, and `bitrate_kbps` are never used
[INFO] [stdout]   --> nidan-server/src/session.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SessionMetrics {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 31 |     pub fn record_frame(&mut self, size: usize, encode_us: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn fps_actual(&self, elapsed_secs: f64) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn bitrate_kbps(&self, elapsed_secs: f64) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `elapsed_secs` are never used
[INFO] [stdout]   --> nidan-server/src/session.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl ServerSession {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 49 |     pub fn new(id: SessionId) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn elapsed_secs(&self) -> f64 { self.started_at.elapsed().as_secs_f64() }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MfaRequired` is never constructed
[INFO] [stdout]   --> nidan-broker/src/auth/mod.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub enum AuthOutcome {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 87 |     MfaRequired { challenge: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthOutcome` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ExpiredCredentials` is never constructed
[INFO] [stdout]   --> nidan-broker/src/auth/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub enum AuthFailureReason {
[INFO] [stdout]    |          ----------------- variant in this enum
[INFO] [stdout] 92 |     InvalidCredentials,
[INFO] [stdout] 93 |     ExpiredCredentials,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthFailureReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_proto_result_i32` is never used
[INFO] [stdout]    --> nidan-broker/src/auth/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl AuthOutcome {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 114 |     pub fn to_proto_result_i32(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate_session_token` is never used
[INFO] [stdout]    --> nidan-broker/src/auth/mod.rs:348:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl AuthEngine {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn validate_session_token(&self, token: &str) -> Result<jwt::SessionClaims> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `verify_ignore_expiry` is never used
[INFO] [stdout]   --> nidan-broker/src/auth/jwt.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl JwtEngine {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn verify_ignore_expiry(&self, token: &str) -> Result<SessionClaims> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stats` is never used
[INFO] [stdout]    --> nidan-broker/src/auth/ratelimit.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl RateLimiter {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn stats(&self) -> RateLimitStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitStats` is never constructed
[INFO] [stdout]    --> nidan-broker/src/auth/ratelimit.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct RateLimitStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_unhealthy` and `get` are never used
[INFO] [stdout]    --> nidan-broker/src/pool/mod.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl VmPool {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn mark_unhealthy(&self, vm_id: &str, reason: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn get(&self, vm_id: &str) -> Option<VmPoolEntry> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> nidan-broker/src/session.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl SessionRegistry {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn get(&self, session_id: &str) -> Option<BrokerSession> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stride` and `damage_rects` are never read
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct RawFrame {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub stride: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub damage_rects: Vec<DamageRect>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RawFrame` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, `width`, and `height` are never read
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct DamageRect {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 48 |     pub x: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 49 |     pub y: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 50 |     pub width: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 51 |     pub height: u16,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DamageRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_xshm`, `supports_xdamage`, and `pixel_format` are never read
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct CapturerCapabilities {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub supports_xshm: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub supports_xdamage: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     pub pixel_format: PixelFormat,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CapturerCapabilities` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Rgba8888` and `Rgb888` are never constructed
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub enum PixelFormat {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 67 |     Bgra8888,
[INFO] [stdout] 68 |     Rgba8888,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 69 |     Rgb888,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PixelFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bytes_per_pixel` and `ffmpeg_name` are never used
[INFO] [stdout]   --> nidan-server/src/capture/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl PixelFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 73 |     /// Bytes par pixel
[INFO] [stdout] 74 |     pub fn bytes_per_pixel(self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn ffmpeg_name(self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StubCapturer` is never constructed
[INFO] [stdout]    --> nidan-server/src/capture/mod.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct StubCapturer {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> nidan-server/src/capture/mod.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl StubCapturer {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 152 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `display_number` is never read
[INFO] [stdout]   --> nidan-server/src/capture/x11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct X11Capturer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 17 |     caps: CapturerCapabilities,
[INFO] [stdout] 18 |     display_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]   --> nidan-server/src/input.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct InputInjector {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     width: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     height: u32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clipboard` is never used
[INFO] [stdout]    --> nidan-server/src/input.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl InputInjector {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn clipboard(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flush`, `set_bitrate`, and `resolution` are never used
[INFO] [stdout]    --> nidan-server/src/encoder/ffmpeg.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl FfmpegEncoder {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn set_bitrate(&mut self, kbps: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Openh264Encoder` is never constructed
[INFO] [stdout]   --> nidan-server/src/encoder/openh264_enc.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Openh264Encoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `request_keyframe`, `encode_frame`, and `resolution` are never used
[INFO] [stdout]    --> nidan-server/src/encoder/openh264_enc.rs:30:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Openh264Encoder {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  29 |     /// Crée un encodeur H.264 openh264
[INFO] [stdout]  30 |     pub fn new(params: &EncoderParams) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn request_keyframe(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn encode_frame(&mut self, frame: &RawFrame) -> Result<Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bitrate_kbps`, `crf`, `h264_profile`, `hw_device`, and `threads` are never read
[INFO] [stdout]   --> nidan-server/src/encoder/params.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct EncoderParams {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub bitrate_kbps: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Qualité CRF (0–51 pour H.264, lower = better)
[INFO] [stdout] 21 |     pub crf: u32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 22 |     /// Profil H.264 : "baseline", "main", "high"
[INFO] [stdout] 23 |     pub h264_profile: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub hw_device: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub threads: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncoderParams` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ffmpeg_hw_codec_name` is never used
[INFO] [stdout]   --> nidan-server/src/encoder/params.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl EncoderParams {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn ffmpeg_hw_codec_name(&self) -> Option<&'static str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerSession` is never constructed
[INFO] [stdout]   --> nidan-server/src/session.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ServerSession {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionMetrics` is never constructed
[INFO] [stdout]   --> nidan-server/src/session.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SessionMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `record_frame`, `fps_actual`, and `bitrate_kbps` are never used
[INFO] [stdout]   --> nidan-server/src/session.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SessionMetrics {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 31 |     pub fn record_frame(&mut self, size: usize, encode_us: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn fps_actual(&self, elapsed_secs: f64) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn bitrate_kbps(&self, elapsed_secs: f64) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `elapsed_secs` are never used
[INFO] [stdout]   --> nidan-server/src/session.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl ServerSession {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 49 |     pub fn new(id: SessionId) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn elapsed_secs(&self) -> f64 { self.started_at.elapsed().as_secs_f64() }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `data`, `width`, `height`, `pts_ms`, `monitor_index`, and `decode_duration_us` are never read
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct DecodedFrame {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 35 |     /// Pixels BGRA (4 bytes par pixel)
[INFO] [stdout] 36 |     pub data: Vec<u8>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 37 |     /// Dimensions
[INFO] [stdout] 38 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 39 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub pts_ms: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 44 |     /// Indice du moniteur source
[INFO] [stdout] 45 |     pub monitor_index: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 46 |     /// Durée de décodage (µs)
[INFO] [stdout] 47 |     pub decode_duration_us: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DecodedFrame` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ffmpeg_hw_name` is never used
[INFO] [stdout]   --> nidan-client/src/decoder/mod.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl DecoderCodec {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn ffmpeg_hw_name(self) -> Option<&'static str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `codec`, `width`, `height`, and `hardware` are never read
[INFO] [stdout]   --> nidan-client/src/decoder/ffmpeg.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FfmpegDecoder {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 13 |     codec: DecoderCodec,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 14 |     width: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 15 |     height: u32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 16 |     hardware: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flush`, `width`, and `height` are never used
[INFO] [stdout]    --> nidan-client/src/decoder/ffmpeg.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl FfmpegDecoder {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn width(&self) -> u32 { self.width }
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 148 |     pub fn height(&self) -> u32 { self.height }
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Openh264Decoder` is never constructed
[INFO] [stdout]   --> nidan-client/src/decoder/openh264_dec.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Openh264Decoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> nidan-client/src/decoder/openh264_dec.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl Openh264Decoder {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  27 |     /// Crée un décodeur H.264 réel
[INFO] [stdout]  28 |     pub fn new(codec: DecoderCodec, _hardware: bool) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn stub(width: u32, height: u32) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn request_idr(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn decode_packet(&mut self, nal: &[u8], _is_keyframe: bool) -> Result<Option<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn width(&self) -> u32 { self.width }
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 124 |     pub fn height(&self) -> u32 { self.height }
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `content` and `mime` are never read
[INFO] [stdout]   --> nidan-client/src/input/mod.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |     ClipboardChanged {
[INFO] [stdout]    |     ---------------- fields in this variant
[INFO] [stdout] 51 |         content: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 52 |         mime:    String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InputEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `KeyUp`, `MouseDown`, `MouseUp`, and `MouseScroll` are never constructed
[INFO] [stdout]   --> nidan-client/src/input/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum InputEvent {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 27 |     KeyUp {
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     MouseDown {
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     MouseUp {
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     MouseScroll {
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InputEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `OneToOne` is never constructed
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum ScalingMode {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     OneToOne,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScalingMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_str` is never used
[INFO] [stdout]   --> nidan-client/src/renderer/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl ScalingMode {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 34 |     pub fn from_str(s: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `fps`, `frames_rendered`, `frames_dropped`, `decode_latency_us`, `last_frame_size`, and `connection_status` are never read
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:96:9
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct RenderMetrics {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout]  96 |     pub fps: f32,
[INFO] [stdout]     |         ^^^
[INFO] [stdout]  97 |     pub frames_rendered: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     pub frames_dropped: u64,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     pub decode_latency_us: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     pub last_frame_size: u32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 101 |     pub connection_status: ConnectionStatus,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RenderMetrics` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Reconnecting` and `Disconnected` are never constructed
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub enum ConnectionStatus {
[INFO] [stdout]     |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 109 |     Reconnecting,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 110 |     Disconnected,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ConnectionStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl ConnectionStatus {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 114 |     pub fn label(self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RendererHandle` is never constructed
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct RendererHandle {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_renderer` is never used
[INFO] [stdout]    --> nidan-client/src/renderer/mod.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn start_renderer(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ClientSessionState` is never used
[INFO] [stdout]  --> nidan-client/src/session.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum ClientSessionState {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientSessionMetrics` is never constructed
[INFO] [stdout]   --> nidan-client/src/session.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ClientSessionMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientSession` is never constructed
[INFO] [stdout]   --> nidan-client/src/session.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ClientSession {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `elapsed_secs`, `fps`, and `record_frame` are never used
[INFO] [stdout]   --> nidan-client/src/session.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl ClientSession {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 43 |     pub fn new(width: u32, height: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn elapsed_secs(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn fps(&self) -> f32 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn record_frame(&mut self, size: usize, decode_us: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/vsock.rs:131:17
[INFO] [stdout]     |
[INFO] [stdout] 131 |             let mut listener = VsockListener::bind(listen_addr)
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `display_number`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_display_number`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/vsock.rs:131:17
[INFO] [stdout]     |
[INFO] [stdout] 131 |             let mut listener = VsockListener::bind(listen_addr)
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `params`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn init_encoder(params: &EncoderParams) -> Result<EncoderInner> {
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MfaRequired` is never constructed
[INFO] [stdout]   --> nidan-broker/src/auth/mod.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub enum AuthOutcome {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 87 |     MfaRequired { challenge: String },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthOutcome` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ExpiredCredentials` is never constructed
[INFO] [stdout]   --> nidan-broker/src/auth/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub enum AuthFailureReason {
[INFO] [stdout]    |          ----------------- variant in this enum
[INFO] [stdout] 92 |     InvalidCredentials,
[INFO] [stdout] 93 |     ExpiredCredentials,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AuthFailureReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_proto_result_i32` is never used
[INFO] [stdout]    --> nidan-broker/src/auth/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl AuthOutcome {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 114 |     pub fn to_proto_result_i32(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `validate_session_token` is never used
[INFO] [stdout]    --> nidan-broker/src/auth/mod.rs:348:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl AuthEngine {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn validate_session_token(&self, token: &str) -> Result<jwt::SessionClaims> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `decoding_key` and `validation` are never read
[INFO] [stdout]   --> nidan-broker/src/auth/jwt.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct JwtEngine {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 39 |     encoding_key: EncodingKey,
[INFO] [stdout] 40 |     decoding_key: DecodingKey,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     validation:   Validation,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `verify` and `verify_ignore_expiry` are never used
[INFO] [stdout]   --> nidan-broker/src/auth/jwt.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl JwtEngine {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn verify(&self, token: &str) -> Result<SessionClaims> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn verify_ignore_expiry(&self, token: &str) -> Result<SessionClaims> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_common_name` is never used
[INFO] [stdout]   --> nidan-broker/src/auth/mtls.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn extract_common_name(cert_der: &[u8]) -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `stats` is never used
[INFO] [stdout]    --> nidan-broker/src/auth/ratelimit.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl RateLimiter {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn stats(&self) -> RateLimitStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitStats` is never constructed
[INFO] [stdout]    --> nidan-broker/src/auth/ratelimit.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct RateLimitStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mark_unhealthy` and `get` are never used
[INFO] [stdout]    --> nidan-broker/src/pool/mod.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout]  80 | impl VmPool {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn mark_unhealthy(&self, vm_id: &str, reason: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn get(&self, vm_id: &str) -> Option<VmPoolEntry> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> nidan-broker/src/session.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl SessionRegistry {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn get(&self, session_id: &str) -> Option<BrokerSession> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `display_number`
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(display_number: u32, width: u32, height: u32) -> Result<Self> {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_display_number`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handshake`
[INFO] [stdout]    --> nidan-proxy-encoder/src/stream/mod.rs:503:9
[INFO] [stdout]     |
[INFO] [stdout] 503 |         handshake: ClientServerHandshake,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handshake`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `params`
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn init_encoder(params: &EncoderParams) -> Result<EncoderInner> {
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_params`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `handshake`
[INFO] [stdout]    --> nidan-proxy-encoder/src/stream/mod.rs:503:9
[INFO] [stdout]     |
[INFO] [stdout] 503 |         handshake: ClientServerHandshake,
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_handshake`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stride` and `damage_rects` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct RawFrame {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub stride: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub damage_rects: Vec<DamageRect>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RawFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, `width`, and `height` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct DamageRect {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 54 |     pub x: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 55 |     pub y: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 56 |     pub width: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 57 |     pub height: u16,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DamageRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_xshm`, `supports_xdamage`, and `pixel_format` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct CapturerCapabilities {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub supports_xshm: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub supports_xdamage: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pixel_format: PixelFormat,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CapturerCapabilities` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Rgba8888` and `Rgb888` are never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub enum PixelFormat {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 73 |     Bgra8888,
[INFO] [stdout] 74 |     Rgba8888,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 75 |     Rgb888,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PixelFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bytes_per_pixel` and `ffmpeg_name` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl PixelFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 79 |     /// Bytes par pixel
[INFO] [stdout] 80 |     pub fn bytes_per_pixel(self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn ffmpeg_name(self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StubCapturer` is never constructed
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct StubCapturer {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl StubCapturer {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 173 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `display_number` is never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct X11Capturer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 17 |     caps: CapturerCapabilities,
[INFO] [stdout] 18 |     display_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `current_capabilities` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/vsock_service.rs:217:18
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl VsockService {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub async fn current_capabilities(&self) -> Option<CapturerCapabilities> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct InputInjector {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     width: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     height: u32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clipboard` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/input.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl InputInjector {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn clipboard(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FfmpegEncoder` is never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct FfmpegEncoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EncoderInner` is never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum EncoderInner {
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl FfmpegEncoder {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  41 |     /// Crée et initialise un encodeur FFmpeg
[INFO] [stdout]  42 |     pub fn new(params: &EncoderParams) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn init_encoder(params: &EncoderParams) -> Result<EncoderInner> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn request_keyframe(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn encode_frame(&mut self, frame: &RawFrame) -> Result<Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     fn encode_stub(&self, frame: &RawFrame, is_keyframe: bool) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn set_bitrate(&mut self, kbps: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `resolution` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/encoder/openh264_enc.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Openh264Encoder {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bitrate_kbps`, `crf`, `h264_profile`, `hw_device`, and `threads` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/params.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct EncoderParams {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub bitrate_kbps: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Qualité CRF (0–51 pour H.264, lower = better)
[INFO] [stdout] 21 |     pub crf: u32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 22 |     /// Profil H.264 : "baseline", "main", "high"
[INFO] [stdout] 23 |     pub h264_profile: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub hw_device: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub threads: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncoderParams` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ffmpeg_codec_name` and `ffmpeg_hw_codec_name` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/params.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl EncoderParams {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn ffmpeg_codec_name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn ffmpeg_hw_codec_name(&self) -> Option<&'static str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerSession` is never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ServerSession {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionMetrics` is never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SessionMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `record_frame`, `fps_actual`, and `bitrate_kbps` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SessionMetrics {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 31 |     pub fn record_frame(&mut self, size: usize, encode_us: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn fps_actual(&self, elapsed_secs: f64) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn bitrate_kbps(&self, elapsed_secs: f64) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `elapsed_secs` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl ServerSession {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 49 |     pub fn new(id: SessionId) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn elapsed_secs(&self) -> f64 { self.started_at.elapsed().as_secs_f64() }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stride` and `damage_rects` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct RawFrame {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub stride: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub damage_rects: Vec<DamageRect>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RawFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `x`, `y`, `width`, and `height` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct DamageRect {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 54 |     pub x: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 55 |     pub y: i16,
[INFO] [stdout]    |         ^
[INFO] [stdout] 56 |     pub width: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 57 |     pub height: u16,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DamageRect` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_xshm`, `supports_xdamage`, and `pixel_format` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct CapturerCapabilities {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub supports_xshm: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub supports_xdamage: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 67 |     pub pixel_format: PixelFormat,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CapturerCapabilities` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Rgba8888` and `Rgb888` are never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub enum PixelFormat {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 73 |     Bgra8888,
[INFO] [stdout] 74 |     Rgba8888,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 75 |     Rgb888,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PixelFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bytes_per_pixel` and `ffmpeg_name` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/mod.rs:80:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl PixelFormat {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 79 |     /// Bytes par pixel
[INFO] [stdout] 80 |     pub fn bytes_per_pixel(self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn ffmpeg_name(self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StubCapturer` is never constructed
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:168:12
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct StubCapturer {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/mod.rs:173:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl StubCapturer {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 173 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `display_number` is never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/capture/x11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct X11Capturer {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 17 |     caps: CapturerCapabilities,
[INFO] [stdout] 18 |     display_number: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `current_capabilities` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/capture/vsock_service.rs:217:18
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl VsockService {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub async fn current_capabilities(&self) -> Option<CapturerCapabilities> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/input.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct InputInjector {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     width: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     height: u32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clipboard` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/input.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl InputInjector {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn clipboard(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FfmpegEncoder` is never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct FfmpegEncoder {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EncoderInner` is never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum EncoderInner {
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/encoder/ffmpeg.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl FfmpegEncoder {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  41 |     /// Crée et initialise un encodeur FFmpeg
[INFO] [stdout]  42 |     pub fn new(params: &EncoderParams) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn init_encoder(params: &EncoderParams) -> Result<EncoderInner> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn request_keyframe(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn encode_frame(&mut self, frame: &RawFrame) -> Result<Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     fn encode_stub(&self, frame: &RawFrame, is_keyframe: bool) -> Result<Vec<u8>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn flush(&mut self) -> Result<Vec<Vec<u8>>> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn set_bitrate(&mut self, kbps: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `resolution` is never used
[INFO] [stdout]    --> nidan-proxy-encoder/src/encoder/openh264_enc.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Openh264Encoder {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn resolution(&self) -> (u32, u32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bitrate_kbps`, `crf`, `h264_profile`, `hw_device`, and `threads` are never read
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/params.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct EncoderParams {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub bitrate_kbps: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 20 |     /// Qualité CRF (0–51 pour H.264, lower = better)
[INFO] [stdout] 21 |     pub crf: u32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 22 |     /// Profil H.264 : "baseline", "main", "high"
[INFO] [stdout] 23 |     pub h264_profile: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub hw_device: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub threads: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncoderParams` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ffmpeg_codec_name` and `ffmpeg_hw_codec_name` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/encoder/params.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl EncoderParams {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn ffmpeg_codec_name(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn ffmpeg_hw_codec_name(&self) -> Option<&'static str> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServerSession` is never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ServerSession {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionMetrics` is never constructed
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SessionMetrics {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `record_frame`, `fps_actual`, and `bitrate_kbps` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl SessionMetrics {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] 31 |     pub fn record_frame(&mut self, size: usize, encode_us: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn fps_actual(&self, elapsed_secs: f64) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn bitrate_kbps(&self, elapsed_secs: f64) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `elapsed_secs` are never used
[INFO] [stdout]   --> nidan-proxy-encoder/src/session.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl ServerSession {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 49 |     pub fn new(id: SessionId) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn elapsed_secs(&self) -> f64 { self.started_at.elapsed().as_secs_f64() }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 2m 39s
[INFO] running `Command { std: "docker" "inspect" "9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb", kill_on_drop: false }`
[INFO] [stdout] 9619ee5d2bef41fad2c8d5627e927b476eac7e5e2d0c315f17304593e3462deb
